package com.example.motion.dao;

import com.example.motion.model.MotionRecord;
import com.example.motion.vo.MotionRecodeTopVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Mapper
public interface MotionRecordMapper {

    /**
     * 新增当天步数
     * @param motionRecord
     */
    void addRecord(MotionRecord motionRecord);

    /**
     * 更新当天步数
     * @param motionRecord
     */
    void updateRecord(MotionRecord motionRecord);

    /**
     * 根据openid和日期获取走步数据
     * @param openid
     * @param motionTime
     * @return
     */
    MotionRecord getStepByOpenidAndDate(@Param("openid") String openid, @Param("motionTime") String motionTime);


    /**
     * 获取指定openid的用户在活动期间的公里数
     * @param openid
     * @return
     */
    Map<String, Object> getTotalKiloByOpenid(@Param("openid") String openid,
                                              @Param("startDate") Date startDate,
                                              @Param("endDate") Date endDate);
    /**
     * 获取分局排行
     * @return
     */
    Map<String, Object> getTotal( @Param("startDate") Date startDate,
                                        @Param("endDate") Date endDate);
    /**
     * 获取个人排行
     * @param startDate
     * @param endDate
     * @return
     */
    List<MotionRecodeTopVo> getPersonTop(@Param("startDate") Date startDate,
                                         @Param("endDate") Date endDate,
                                         @Param("officeCode")String officeCode);

    /**
     * 获取分局排行
     * @param startDate
     * @param endDate
     * @return
     */
    List<MotionRecodeTopVo> getOfficeTop(@Param("startDate") Date startDate,
                                         @Param("endDate") Date endDate);

    /**
     * 获取分局目标里程完成进度
     * @param startDate
     * @param endDate
     * @return
     */
    List<MotionRecodeTopVo> getOfficeTargetMileage(@Param("startDate") Date startDate,
                                         @Param("endDate") Date endDate);
    /**
     * 获取活动参与总人数
     */
    int getAcitivityPersonNum(@Param("startDate") Date startDate,
                                         @Param("endDate") Date endDate);
}
